package com.system.redis;

import java.util.List;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.Tuple;


/** 
 * 说明： redis
 * @version
 */
public interface RedisDao {
	
	/**新增(存储字符串)
	 * @param key
	 * @param value
	 * @return
	 */
	public boolean addString(String key, String value);
	
	/**拼接字符串
	 * @param key
	 * @param value
	 * @return
	 */
	public boolean appendString(String key, String value);
	
	/**新增(存储Map)
	 * @param key
	 * @param map
	 * @return
	 */
	public String addMap(String key, Map<String, String> map);
	
	/**获取map
	 * @param key
	 * @return
	 */
	public Map<String,String> getMap(String key);
	
	/**新增(存储List)
	 * @param key
	 * @param list
	 * @return
	 */
	public void addList(String key, List<String> list);
	
	/**获取List
	 * @param key
	 * @return
	 */
	public List<String> getList(String key);
	
	/**新增(存储set)
	 * @param key
	 * @param set
	 */
	public void addSet(String key, Set<String> set);
	
	/**获取Set
	 * @param key
	 * @return
	 */
	public Set<String> getSet(String key);
	
	/**删除
	 * @param key
	 */
	public boolean delete(String key); 
	
	/**删除多个 
	 * @param keys
	 */
	public void delete(List<String> keys);
	
	/**修改
	 * @param pd
	 * @return
	 */
	public boolean eidt(String key, String value);
	
	/**通过ket获取数据
	 * @param keyId
	 * @return
	 */
	public String get(String keyId);
	
	
	/**
	 * @Title: expireTomorrow   
	 * @Description: 获取离第二天还剩余的秒数，用来设置Redis过期时间  
	 * @param:  key   设置过期时间的Key值
	 * @Author: Mr.Yu   
	 * @return: void 
	 * @Date:   2018年2月6日     
	 * @throws
	 */
	public void expireTomorrow(String key);
	
	/**
	 * @Title: expireTomorrow   
	 * @Description: 获取离下周还剩余的秒数，用来设置Redis过期时间  
	 * @param:  key   设置过期时间的Key值
	 * @Author: Mr.Yu   
	 * @return: void 
	 * @Date:   2018年2月6日     
	 * @throws
	 */
	public void expireWeek(String key);
	
	/**
	 * @Title: expireTomorrow   
	 * @Description: 获取离下个月还剩余的秒数，用来设置Redis过期时间  
	 * @param:  key   设置过期时间的Key值
	 * @Author: Mr.Yu   
	 * @return: void 
	 * @Date:   2018年2月6日     
	 * @throws
	 */
	public void expireMonth(String key);
	
	
	/**
	 * 
	 * @Title: zadd   
	 * @Description: 将排行榜信息添加到Redis中  
	 * @param key    信息代表的Key值
	 * @param value  Key值对应的Value值
	 * @param score  排序所用字段(赠送礼物价值)
	 * @Author: Mr.Yu   
	 * @return: void 
	 * @Date:   2018年2月6日     
	 * @throws
	 */
	public void zadd(String key, String value, double score);
	
	
	/**
	 * 
	 * @Title: zrevrange   
	 * @Description: 获取score数据由大到小排序的Set集合
	 * @param key    信息代表的Key值
	 * @param start  首个信息的下标(最小为0)
	 * @param end    最后一个信息的下标
	 * @return   
	 * @Author: Mr.Yu   
	 * @return: Set<String> 
	 * @Date:   2018年2月6日     
	 * @throws
	 */
	public Set<Tuple> zrevrange(String key, int start, int end);
	
	
	
	public void incrby(String key,int count); 
	
	
	/**新增(存储对象)
	 * @param key
	 * @param value
	 * @return
	 */
	public boolean addObject(String key, Object value);
	
	/**
	 *  设置过期时间
	  * @Description
	  * @Author zhaozhenhua
	  * @date   2018年4月12日
	  * @throws Exception
	 */
	public void expire(String key,long expiredtime);

	/**
	 * 设置key value并设置过期时间(秒)
	  * @Description
	  * @Author zhaozhenhua
	  * @date   2018年5月3日
	  * @param pd
	  * @return
	  * @throws Exception
	 */
	public void setex(String key, int codExpired, String value);
	


}
